package com.tangguoxiang.rpc.test.consumer;

import java.util.concurrent.ExecutionException;

import com.tanggguoxiang.rpc.client.RpcClient;
import com.tanggguoxiang.rpc.client.RpcFuture;
import com.tanggguoxiang.rpc.proxy.client.RpcAsyncProxy;

/**
 * 　　　　　　　　┏┓　　　┏┓+ +
 * 　　　　　　　┏┛┻━━━┛┻┓ + +
 * 　　　　　　　┃　　　　　　　┃
 * 　　　　　　　┃　　　━　　　┃ ++ + + +
 * 　　　　　　 ████━████ ┃+
 * 　　　　　　　┃　　　　　　　┃ +
 * 　　　　　　　┃　　　┻　　　┃
 * 　　　　　　　┃　　　　　　　┃ + +
 * 　　　　　　　┗━┓　　　  ┏━┛
 * 　　　　　　　　　┃　　　┃
 * 　　　　　　　　　┃　　　┃ + + + +
 * 　　　　　　　　　┃　　　┃　　　　Code is far away from bug with the animal protecting
 * 　　　　　　　　　┃　　　┃ + 　　　　神兽保佑,代码无bug
 * 　　　　　　　　　┃　　　┃
 * 　　　　　　　　　┃　　　┃　　+
 * 　　　　　　　　　┃　 　　┗━━━┓ + +
 * 　　　　　　　　　┃ 　　　　　　　┣┓
 * 　　　　　　　　　┃ 　　　　　　　┏┛
 * 　　　　　　　　　┗┓┓┏━┳┓┏┛ + + + +
 * 　　　　　　　　　　┃┫┫　┃┫┫
 * 　　　　　　　　　　┗┻┛　┗┻┛+ + + +
 *
 * @author 唐国翔
 * @since 2020-08-09 10:46 下午
 **/
public class ConsumerStarter {

    private static void sync() {
        RpcClient client = new RpcClient("127.0.0.1:8766", 3000);
        HelloService helloService = client.invokeSync(HelloService.class);
        String hello = helloService.hello("张三");
        System.err.println(hello);
    }

    private static void async() throws ExecutionException, InterruptedException {
        RpcClient client = new RpcClient("127.0.0.1:8766", 3000);
        RpcAsyncProxy rpcAsyncProxy = client.invokeAsync(HelloService.class);
        User user = new User();
        user.setId(100L);
        user.setName("李四");
        RpcFuture hello = rpcAsyncProxy.call("hello", user);

        //String hello = helloService.hello("张三");
        System.err.println(hello.get());
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        async();
    }

}
